/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CifradoDescifradoMensaje;

/**
 *
 * @author kastillo
 */
import java.security.*;
import javax.crypto.*;

public class CifradoDescifradoClaveBinaria {

    public static void main(String args[]) throws Exception {
//        if (args.length != 1) {
//            System.out.println("Indique texto a cifrar"
//                    + " como argumento entre comillas");
//            return;
//        }
        String argstext = "texto para cifrar";
        System.out.print("Generando una clase DESede...");
        KeyGenerator generadorClaves =
                KeyGenerator.getInstance("DES", "BC");
        generadorClaves.init(128);
        Key clave = generadorClaves.generateKey();
        System.out.println("\rClave DESede generada");
// Creamos un cifrador/descifrador
        Cipher cifrador = Cipher.getInstance(
                "DESede/ECB/PKCS5Padding", "BC");
        cifrador.init(Cipher.ENCRYPT_MODE, clave);
// Encritamos con la clave obtenida
        byte[] texto_plano = argstext.getBytes("UTF8");
        byte[] texto_cifrado = cifrador.doFinal(
                texto_plano);
        System.out.print("Texto plano: ");

        for (int i = 0; i < texto_plano.length; i++) {
            System.out.print(texto_plano[i] + " ");
        }
        System.out.print("\nTexto cifrado: ");
        for (int i = 0; i < texto_cifrado.length; i++) {
            System.out.print(texto_cifrado[i] + " ");
        }
        System.out.println();
// Reiniciamos el cifrador al modo de
// desencritacion y desencriptamos
        cifrador.init(Cipher.DECRYPT_MODE, clave);
        byte[] texto_desencriptado = cifrador.doFinal(
                texto_cifrado);
        System.out.println("Texto desencriptado: "
                + new String(texto_desencriptado, "UTF8"));
    }
}
